Method and apparatus for wirelessly sharing a file using an application-level connection

ABSTRACT

Ad hoc application-level connections are established between wireless devices. Autonomous selection of files on a provider device facilitates migration of a file from the file provider to a file receiver. Once a file provider and a file receiver are communicatively coupled using an application-level connection, a portion of a determined file is conveyed from the provider node to a receiver node while a connection remains viable.

RELATED APPLICATIONS

The present application is a continuation-in-part of application Ser. No. 10/922,243 filed on Aug. 18, 2004 entitled “Method and Apparatus for Wirelessly Sharing a File Using an Application-Level Connection” by Singer et al., the priority date of which is hereby claimed and which is hereby incorporated by reference in its entirety.

BACKGROUND

Peer-to-peer networking has altered the basic notions of how computers share data. In a more traditional data sharing paradigm, computers share information in a structured manner where one computer is a server and another computer is a client. This traditional concept is known as the “client-server” model. Although the manner in which a data transfer takes place is different, peer-to-peer networking and client-sever transactions typically both rely on a ubiquitous computer data network, for example a local area network or a wide area network (e.g. the Internet). One distinguishing characteristic of the peer-to-peer model vis-à-vis the client-server model is that a computer operating in a peer-to-peer configuration is capable of acting both as a client and as a server, depending upon a particular data transaction. For example, when a computer in a peer-to-peer network needs data, that computer can operate as a client. The same computer can also provide data as a server when called upon to do so by another computer communicatively associated with the first computer in a peer-to-peer network.

Peer-to-peer networking has gained wide popularity as a means for sharing files. Peer-to-peer networking is especially popular in those instances when the shared files are media content files, for example audio content and video content files. One aspect of such file sharing is that users are able to specify what files are desired and then search for the files on other computers that are attached to a peer-to-peer network. The standard mechanisms for discovering files in a peer-to-peer network works fairly well because the computers attached to the peer-to-peer network are typically available when a search for a desired file is performed.

With the proliferation of mobile devices, many users of such devices attempt to share files with each other using a wireless connection. For example, a user of a digital music device may want to share a music file with another user. Up until now, both users would need to collaborate with each other to affect the transfer. Cell phone users may want to share ring-tones or photographs. Again, both users would need to agree to the transfer and collaborate to see the transfer through to fruition. The need for such collaboration could be substantially reduced if peer-to-peer networking could be used between wireless devices.

Unfortunately, the notion of peer-to-peer networking breaks down in the realm of wireless devices. One reason for this is the fact that mobile devices maintain only a transient connection with other mobile devices. This is especially true when the mobile devices interact with each other in local networking structures such as Blue Tooth and 802.11 wireless networks that do not bridge over to a wide area network. As such, it is only when two wireless devices are in proximity to each other that a local connection between them can be formed. As such, file sharing through peer-to-peer networking is limited by the short duration and limited bandwidth of a connection established between such devices. In fact, a peer-to-peer network has little chance of operating in a realm where the network is only transiently present because there is simply no means for discovering file resources in the usual peer-to-peer manner. Any attempt to search for a required file would be limited in scope to other wireless devices proximate to the device requesting the file. Another problem with any type of file sharing is that of piracy of copyrighted content. The use of any peer-to-peer networking to share copyrighted files, e.g. music files in the form of MP3, promotes copyright infringement.

SUMMARY

A method and apparatus for sharing a file comprising recognizing a neighbor node, establishing an application-level connection with the neighbor node, determining a file that is to be shared with the neighbor node and conveying a portion of the determined file with the neighbor node.

BRIEF DESCRIPTION OF THE DRAWINGS

Several alternative embodiments will hereinafter be described in conjunction with the appended drawings and figures, wherein like numerals denote like elements, and in which:

FIG. 1 is a pictorial representation that depicts one illustrative use case wherein the present method is utilized for ad hoc file sharing;

FIG. 2 is a flow diagram that depicts one example method for wirelessly sharing a file;

FIG. 2A just low diagram depicts one alternative method for determining the file according to membership in a group;

FIG. 2B is a flow diagram that depicts one alternative method for determining a file based on the availability of files from a second neighbor node;

FIG. 3 is a flow diagram that depicts one alternative example method for determining a file to be shared by means of a file request;

FIG. 4 is a flow diagram that depicts an alternative method for receiving an authentication token in the form of an identity code and authenticating a selected file;

FIG. 5 is a flow diagram that depicts an alternative method for receiving an authentication token in the form of a Global Release Identifier and authenticating a selected file;

FIG. 6 is a flow diagram that depicts an alternative method for receiving an authentication token in the form of a calculated value and authenticating a selected file;

FIG. 7 is a flow diagram that depicts an example alternative method for conveying a portion of a determined file to a neighbor node;

FIG. 7A is a flow diagram that depicts an alternative method for conveying a determined file to a first neighbor node, wherein the file is obtained from a second neighbor node;

FIG. 8 is a flow diagram that depicts one alternative example method for establishing an incentive;

FIG. 9 is a flow diagram that depicts one example method for noting a sale;

FIG. 10 is a flow diagram that depicts yet another method for noting a sale;

FIG. 11 is a flow diagram that depicts an alternative method for establishing an incentive through an offer—acceptance process;

FIG. 12 is a block diagram that depicts several example embodiments of a wireless file provider device;

FIG. 13 is a pictorial representation that depicts several alternative example embodiments of a file cache; and

FIG. 14 is a data flow diagram that depicts the internal operation of several example embodiments of a wireless file provider device.

DETAILED DESCRIPTION

FIG. 1 is a pictorial representation that depicts one illustrative use case wherein the present method is utilized for ad hoc file sharing. Today, there are a plethora of intelligent, wireless devices. These intelligent wireless devices include, but are not necessarily limited to personal digital entertainment units 15, cellular telephones 5 and personal digital assistants 10. Included in each of these example intelligent wireless devices is a wireless interface enabling the intelligent wireless device to participate in an ad hoc network 20. It should be noted that there are many varied techniques for establishing an ad hoc network 20. From the perspective of this disclosure, an ad hoc network 20 comprises a network that is temporarily established between intelligent wireless devices. In a typical ad hoc networking environment, the ad hoc network is established when one intelligent wireless device perceives a second intelligent wireless device. The two intelligent wireless devices enable the communication of one or more data packets between processes executing in each of the intelligent wireless devices. Also shown in the figure is a purchase manager 25, the function of which is described infra.

The physical structure of intelligent wireless device includes a wireless network interface. One form of a wireless network interface includes an 802.11 wireless networking interface. Another form of a wireless network interface includes a Blue-Tooth interface. Doubtless, continued evolution of intelligent wireless networking will yield yet other forms of wireless network interfaces. It should be noted that the present method can be applied in any wireless networking structure and is not dependent upon any particular form of a wireless network interface herein described.

FIG. 2 is a flow diagram that depicts one example method for wirelessly sharing a file. According to this example method, a file is shared wirelessly by first recognizing a neighbor node (step 35). Once a neighbor node is recognized, an application-level connection is established to the recognized neighbor node (step 40). A file that is to be shared with the neighbor node is then determined (step 45). So long as a connection with the neighbor node remains viable (step 50), a portion of the determined file is conveyed to the neighbor node (step 55).

FIG. 2A is a flow diagram that depicts one alternative method for determining a file to be shared according to membership in a group. According to this alternative method, the user identifier is received from a recognized neighbor node (step 37). It should be appreciated that the user of a recognized neighbor node may be affiliated with a particular group. Such group affiliation, according to one illustrative use case, comprises membership in a media club. For example, a user of a recognized neighbor node may be a member of a “book of the month” club. Another type of group membership may comprise membership in a “song of the day” club. It should be appreciated that these illustrative use cases are provided herein merely as examples of various types of group affiliations and are not intended to limit the scope of the claims appended hereto. In the event that the user identifier received from a neighbor node is affiliated with a particular group (step 42), a file to be shared with the neighbor node is determined according to the group affiliation (step 52). For example, different files stored in a first provider node may be affiliated with a particular group.

FIG. 2B is a flow diagram that depicts one alternative method for determining a file based on the availability of files from a second neighbor node. According to this alternative method, determining a file to be shared with the first recognized neighbor node is accomplished by recognizing a second neighbor node (step 39). Once a second neighbor node is recognized, a second application-level connection is established with the second neighbor node (step 44). It should be appreciated that a second neighbor node may have stored thereon various files that may be shared with the first recognized neighbor node. Accordingly, a list of one or more files is received from the second neighbor node (step 49). According to yet another variation of the present method, this list of one or more files available on the second neighbor node is received by means of the application-level connection established with said second neighbor node. The list of files available on the second neighbor node is then conveyed to the first neighbor node (step 54). Typically, this is accomplished by conveying the list of one or more files to the first neighbor node using the first established application-level connection. As such, the application-level connection established with the first neighbor node is then used to receive a selection of one or more files (step 59). Typically, the first recognized neighbor node will select files from the list of one or more files available on the second recognized neighbor node.

FIG. 3 is a flow diagram that depicts one alternative example method for determining a file to be shared by means of a file request. According to this alternative example method, determining a file to be shared is accomplished by receiving a request for a file (step 65). According to one variation of the present method, a request for a file comprises an explicit request for a particular file. For example, an explicit request can include a request for a specific file (e.g. by the name of a specific title of an audio file). According to this alternative example method, a file is selected according to the received file request (step 70). An authentication token is also received (step 75). Once the authentication token is received, the selected file is authenticated using the authentication token (step 80). When the file is determined to be authentic (step 85), the selected file is declared to be the determined file, i.e. the file to be shared with the neighbor node (step 90).

In many situations, there may be nearly identical files that contain nearly identical content. As such, these nearly identical files may be identically named. For example, there may be several files that each includes a different rendition of the national anthem. Although each file may sound similar to the human ear, they may not necessarily contain the same digital representation of the national anthem. This problem is magnified by the fact that several legitimate sources of a particular audio track may promulgate different versions of the audio track, each having the same file name (e.g. “STAR SPANGLED BANNER”). These different renditions may vary according to encoding rate or encoding resolution, just to name a few. In order to alleviate this problem, one variation of the present method provides for associating an identity code with a promulgated file. The identity code, according to one illustrative use case of the present method, is included in a file name by which a particular file is accessed by a file management system (e.g. an operating system). According to yet another illustrative use case, the identity code is included in a file header which is stored as part of the file itself. It should be appreciated that various forms of storage can be used to store the identity code and the various illustrative use cases presented herein are not intended to limit the scope of the claims appended hereto. It should also be noted that this problem is common to all types of files and is not necessarily limited to audio content files. For example, static image files and video files are susceptible to this type of misidentification. Furthermore, the claims appended hereto are not intended to be limited to these examples. A wide variety of file types can be misidentified. Consider yet another example of an electronic book file (e-book). And e-book file is yet another example of a file type that can be misidentified and this and other examples presented herein are not intended to limit the scope of the claims appended hereto.

FIG. 4 is a flow diagram that depicts an alternative method for receiving an authentication token in the form of an identity code and authenticating a selected file. According to this alternative method, an authentication token is received by receiving an identity code (step 100). Accordingly, an identity code is determined for the selected file (step 105). When the received identity code and the identity code determined for the selected file are substantially equivalent (step 110), the selected file is declared as authentic (step 115). In one illustrative use case, an identity code can be received along with a file name for a particular file. And according to yet another illustrative use case, an identity code can be received as part of a file name for a particular file. In either case, the present method applies. According to one variation of the present method, an identity code for a selected file is determined by extracting an identity code from a file name of a file that is intended to be shared with a neighbor node. According to yet another variation of the present method, an identity code for a selected file is determined by extracting an identity code from the file itself. It should be further appreciated that, according to one illustrative use case, an identity code comprises a unique digital value that has been directly encoded to correspond to a specific and unique media content file. It should be further appreciated that according to this illustrative use case, two files that comprise different versions of the same audio or video track will have different unique identity codes commensurate with the teachings of the present method.

FIG. 5 is a flow diagram that depicts an alternative method for receiving an authentication token in the form of a Global Release Identifier and authenticating a selected file. In the case where a legitimate content file is shared between neighbor mobile nodes, the legitimate content file may be identified by a Global Release Identifier (a.k.a. “GRid”). The Global Release Identifier is a content file identifier promulgated by a recognized authority (e.g. the Recording Industry Association of America or the International Federation of Phonographic Industries). Accordingly, one variation of the present method provides for receiving a Global Release Identifier (step 120). Once the Global Release Identifier is received, a Global Release Identifier is also determined for a selected file (step 125). When the received Global Release Identifier is substantially equivalent to the Global Release Identifier determined for a selected file (step 130), the selected file is declared to be authentic (step 135). It should be appreciated that various means may be utilized to receive a global release identifier, for example as a separate identifier or as part of a file name. These are merely examples of the various alternative methods that can be used to receive a Global Release Identifier and these examples are not intended to limit the scope of the claims appended hereto. It should also be appreciated that various means may be utilized to determine a Global Release Identifier for a selected file. For example, according to an illustrative variation of the present method, a Global Release Identifier is determined by extracting a Global Release Identifier from a file name of a file that is intended to be shared with a neighbor node. According to yet another variation of the present method, a Global Release Identifier is extracted from a file itself. It should further be appreciated that a Global Release Identifier can be overloaded onto many different renditions of the same audio and/or video title. For example, the same Global Release Identifier can be used to identify two different files of an audio track wherein each of the two files is encoded at a different sampling rate. In this event, the Global Release Identifier can not be used to identify a unique file. Consequently, the use of a Global Release Identifier may need to be used in conjunction with another method for uniquely identifying a particular released file. For example, other methods described herein can thus be used in conjunction with the Global Release Identifier in a variation of the present method for authentication of a particular determined file. FIG. 6 is a flow diagram that depicts an alternative method for receiving an authentication token in the form of a calculated value and authenticating a selected file. In some use cases, a content file is not identified by an identity code or a Global Release Identifier. Accordingly, one variation of the present method provides for receiving a calculated value (step 140) that identifies a file. A calculated value includes, but is not limited to a hash code and cyclic redundancy code, or “CRC”. Once the calculated value is received, a calculated value is also determined for a selected file (step 145). When the received calculated value is substantially equivalent to the calculated value determined for a selected file (step 150), the selected file is declared to be authentic (step 155). It should be appreciated that various means may be utilized to receive a calculated value, for example as a separate identifier or as part of a file name. These are merely examples of the various alternative methods that can be used to receive a calculated value and these examples are not intended to limit the scope of the claims appended hereto. It should also be appreciated that various means may be utilized to determine a calculated value for a selected file. For example, according to an illustrative variation of the present method, a calculated value is determined by extracting a calculated value from a file name of a file that is intended to be shared with a neighbor node. According to yet another variation of the present method, a calculated value is extracted from a file itself. In yet another illustrative variation of the present method, a selected file is subjected to an algorithm in order to generate a calculated value that can be used for comparison with a calculated value received in association with a file request.

FIG. 7 is a flow diagram that depicts an example alternative method for conveying a portion of a determined file to a neighbor node. According to this alternative example method, a portion of a determined file is conveyed to a neighbor node by first receiving from the neighbor node a segment identifier (step 160). A file segment is then extracted from the determined file according to the segment identifier (step 165). It should be appreciated that a neighbor node may only need a portion of a determined file. For example, a neighbor node may have previously received a portion of a file which the neighbor node needs to augment with a further portion of the same file. According to one illustrative use case that is not intended to limit the scope of the claims appended hereto, a neighbor node may request a further portion of a file using a segment identifier. It should be further noted that in order to determine a particular file, a selected file must first be authenticated according to the techniques and teachings presented herein. Once a selected file is so authenticated, both the neighbor node that has requested a further portion of the file and a provider node can have a high level of confidence that a file from which a first portion of a file is received by the neighbor node and the selected file are identical, even in the case where the first portion of a file is received from an independent node. The extracted file segment is then conveyed to the neighbor node (step 170).

FIG. 7A is a flow diagram that depicts an alternative method for conveying a determined file to a first neighbor node, wherein the file is obtained from a second neighbor node. According to this alternative method, a file is shared with a first neighbor node by recognizing a second neighbor node (step 161). A second application-level connection is then established with the second recognized neighbor node (step 162). It should be appreciated that, according to this variation of the present method, the second recognized neighbor node is used as a source for file to be shared with the first recognized neighbor node. Accordingly, a list of available files is typically received from the second neighbor node commensurate with the teachings for determining a file to be shared with a first neighbor node heretofore described. Once a second application-level connection is established with the second recognized neighbor node, a portion of a determined file is then received by way of the second established connection (step 167). A portion of a determined file is then conveyed to a first recognized neighbor node by means of a first established application-level connection (step 168). It should be appreciated that a first established application-level connection is established with the first recognized neighbor node.

FIG. 2 further illustrates that one alternative example method for sharing a file further comprises establishing an incentive for sharing the determined file with the neighbor node (step 60). It should be further appreciated that sharing a file in an ad-hoc network environment may require some form of incentive in order to encourage a user in control of a providing node to allow the providing node to actually provide a file. In yet other situations, a financial incentive for sharing a file needs to be provided to a copyright owner. For example, a particular file may be a media content file including, but not limited to an audio track, a static image, a moving image (i.e. a video file) and an e-book. It should be noted that these example media content files are not intended to limit the scope of the claims appended hereto.

FIG. 8 is a flow diagram that depicts one alternative example method for establishing an incentive. According to this alternative example method, establishing an incentive is accomplished by communicating a sales price to a neighbor node (step 175). In the event that the neighbor node is interested in purchasing a file that it received from a first node according to the present method, the neighbor node will dispatch an acceptance of the sales price. Accordingly, the acceptance is received from the neighbor node (step 180). To further consummate the sale as a means of an incentive, a user identifier is also received from the neighbor node (step 185). The user identifier includes, but is not limited to an account number, a cellular telephone number, a cellular service account number, a credit card number, and a debit card number. Once the user identifier is received, a sale of a file shared with the neighbor node is then noted (step 190).

FIG. 9 is a flow diagram that depicts one example method for noting a sale. According to this example method, a sale is noted by communicating a sales price to a purchase manager (step 200). According to one variation of the present method, the sales price is communicated to the purchase manager at the time of sale. According to another variation of the present method, the sales price is communicated to the purchase manager at a time subsequent to the sale of a file. Along with the sales price, a provider identifier is also communicated to the purchase manager (step 205). The user identifier received from the neighbor node is also communicated to the purchase manager (step 210). Accordingly, the purchase manager can use the user identifier in order to debit the user's account (i.e. the user that received a file from a provider node). The purchase manager can also use the provider identifier to enable a credit to the user of a provider node.

FIG. 10 is a flow diagram that depicts yet another method for noting a sale. According to this alternative method, a sale is noted by communicating the user identifier received from the neighbor node to a purchase manager (step 215). In this situation, an identifier for the determined file (i.e. the file received by a user using the neighbor node) is then communicated to the purchase manager (step 220). In this manner, the purchase manager is able to use the user's identifier in order to debit the user's account. The identifier for the determined file can be used by the purchase manager to establish a purchase price for a file shared with the neighbor node.

FIG. 11 is a flow diagram that depicts an alternative method for establishing an incentive through an offer—acceptance process. According to this alternative method, a sales price for a file shared with a neighbor node is communicated to the neighbor node (step 225). In response, the neighbor node can either accept the sales price or respond with a counter offer. Accordingly, an acceptance is received (step 230) according to one variation of the present method and a counter-price is received (step 240) according to a different variation of the present method. When an acceptance is received, a sale of a file to the neighbor node is noted (step 235). When a counter price is received, one variation of the present method provides for determining if the counter price is greater than or equal to a minimum price established for a particular file (step 245). When the counter price is greater than or equal to the minimum price (step 245), a sale of a file is noted (step 250). Accordingly, noting of the sale in either of these situations can be accomplished in varied manners as herein described.

FIG. 12 is a block diagram that depicts several example embodiments of a wireless file provider device. According to one example embodiment, a wireless file provider device 705 comprises a processor 700, a wireless interface 710 and a memory 730. According to one alternative embodiment, a wireless file provider device 705 further comprises a local user interface. The local user interface, according to yet another example embodiment, comprises a user key 720 and a display 715.

The user various example embodiments of a wireless file provider device 705 as heretofore described further includes various functional modules each of which comprises an instruction sequence that can be executed by the processor. An instruction sequence that implements a functional module, according to one alternative embodiment, is stored in the memory 730. The reader is advised that the term “minimally causes the processor” and variants thereof is intended to serve as an open-ended enumeration of functions performed by the processor as it executes a particular functional module (i.e. instruction sequence). As such, an embodiment where a particular functional module causes a processor to perform functions in addition to those defined in the appended claims is to be included in the scope of the claims appended hereto.

The functional modules (and their corresponding instruction sequences) described thus far that enable wirelessly sharing a file are, according to one alternative embodiment, imparted onto computer readable medium. Examples of such medium include, but are not limited to, random access memory, read-only memory (ROM), Compact Disk (CD) ROM, Digital Versatile Disk (DVD), floppy disks, hard disk drives and magnetic tape. This computer readable medium, which alone or in combination can constitute a stand-alone product, can be used to convert a general-purpose computing device into a device for wirelessly providing files wherein said device is capable of providing a file wirelessly according to the techniques and teachings presented herein. Accordingly, the claims appended hereto are to include such computer readable medium imparted with such instruction sequences that enable execution of the present method and all of the teachings herein described.

Stored in the memory 730 of one example embodiment are several functional modules including a peer-to-peer module 735, a file determination module 740 and a conveyance module 755. A portion of the memory 730 is used to store files. This portion of the memory is referred to as a file cache 750. It should also be noted that one alternative embodiment of a file determination module 740 comprises an authentication module 742. According to yet another alternative embodiment, the file provider device 705 further comprises an incentive module 760. According to yet another alternative embodiment, the memory 730 is also used to store a list of remotely available files 752.

FIG. 13 is a pictorial representation that depicts several alternative example embodiments of a file cache. According to one example embodiment, a file cache 750 comprises various records each of which includes a file name field 800. According to this alternative embodiment, the file cache 750 further comprises a file content field 825, which is used to store the contents of a file. According to one alternative illustrative embodiment, a record in the file cache 750 further includes a Global Release Identifier field 805. According to yet another alternative example embodiment, a record included in the file cache 750 further includes an identity code field 810. According to yet another illustrative embodiment, a record included in the file cache 750 further includes a calculated value field. According to yet another illustrative embodiment, a record included in the file cache 750 further includes a hash code field 815. And in yet another alternative example embodiment, a record stored in the file cache 750 further comprises a CRC field 820. In order to support embodiments of a file provider device 705 that provide for establishing an incentive for sharing a file, yet another alternative embodiment of the file cache 750 includes a sales price field 830 for a record stored therein. In those embodiments of a file provider device 705 that provide for a negotiated sale of a file, an alternative embodiment of the file cache 750 includes a minimum price field 835. According to yet another alternative embodiment, the file cache 750 further includes a user group field 836. The user group field 836 is typically used to affiliate a particular file stored in the file cache 750 with a particular user group. A particular user group can include various memberships in various types of groups as heretofore described.

One alternative embodiment of a file provider device 705 supports the conveyance of a file according to a segment identifier. Accordingly, one alternative embodiment of the file cache 750 includes a file content field 825 that is segregated into individual segments (825A, 825B, 825C, etc.).

FIG. 14 is a data flow diagram that depicts the internal operation of several example embodiments of a wireless file provider device. According to one example embodiment, the processor 700 executes the peer-to-peer module 735. The peer-to-peer module 735, when executed by the processor 700, minimally causes the processor to recognize a neighbor node by way of the wireless interface 710. Once a neighbor node is recognized, a part of the peer-to-peer module 735 further minimally causes the processor 700 to establish an application-level connection 711 with the recognized neighbor node using wireless interface 710.

Once a connection is established with a recognized neighbor node, the processor 700 executes the file determination module 740. When executed by the processor 700, the file determination module 740 minimally causes the processor 700 to determine a file to be provided to the recognized neighbor node. The conveyance module 755, when executed by the processor 700, minimally causes the processor to provide 870 from the file cache 750 a determined file while the connection 711 to the neighbor node remains viable. The connection 711 established with the neighbor node comprises an application-level connection established by means of the wireless interface 710. According to one alternative embodiment of the conveyance module, a file is retrieved 870 according to a filename (stored in the filename field 800). The content of the file is retrieved 870 from the file cache 750 from a field called content 825. The retrieved content is then directed 875 to the peer-to-peer module 735 as the processor 700 continues to execute the conveyance module 755.

According to one alternative embodiment, the file determination module 740 causes the processor to determine a file by minimally causing the processor 700 to receive a user identifier by means of the first established application-level connection. The user identifier, typically, is a user identifier that is affiliated with a user of a first recognize neighbor node. It should be appreciated that user identifier, according to one alternative embodiment, includes therein a group identifier. Typically, the group identifier will identify a particular user as a member of a particular group. As such, this alternative embodiment of a file determination module 740 minimally causes the processor 700 to select one or more files stored in the file cache 750 wherein the group identifier matches the entry in a user group field 836 included in the file cache 750.

According to yet another alternative embodiment, the file determination module 740 causes the processor to determine which file is to be shared with a first recognized neighbor node by minimally causing the processor 700 to execute the peer-to-peer module 735. By executing the peer-to-peer module 735, the processor 700 is minimally caused to recognize a second neighbor node and then establish a second application-level connection with the second recognize neighbor node using the wireless interface 710. Once a second application-level connection is established with a second neighbor node, the processor, as it continues to execute this alternative embodiment of a file determination module 740, is further minimally caused to receive a list of one or more available files from the second neighbor node. According to this alternative embodiment, the file determination module 740 further minimally causes the processor to store in a remotely available files list 752 a filename in a filename field 827 and a node identifier in a node identifier field 803. As such, the file determination module 740 causes the processor 700 to build a list of one or more files available on a second recognized neighbor node. The file determination module 740 further minimally causes the processor 700 to convey the list of one or more files available on a second recognized neighbor node to the first recognized neighbor node. According to this alternative embodiment, the file determination module 740 causes the processor 700 to convey this list to the first recognized neighbor node using the first established application-level connection which has been established with the first recognized neighbor node.

According to yet another alternative embodiment, the file determination module 740, when executed by the processor 700, causes the processor to determine a file by minimally causing the processor to receive 850 a file request from the neighbor node by means of the application level connection 711. Based on the file request, the processor will select 855 a file from the file cache 750. This alternative embodiment of a file determination module 740 further minimally causes the processor to receive an authentication token from the neighbor node by means of the application level connections 711. This alternative embodiment of the file determination module 700 further minimally causes the processor 700 to authenticate the selected file according to the authentication token and execute the conveyance module 735 when the file is determined to be authentic.

According to one alternative example embodiment, the file determination module 740 includes an authentication module 742. According to this alternative embodiment, the file determination module 740 causes the processor to receive an authentication token in the form of a Global Release Identifier. The authentication module 742, when executed by the processor 700, causes the processor to authenticate the selected file by minimally causing the processor to compare a received Global Release Identifier with a Global Release Identifier for the selected file. Accordingly, this alternative embodiment of the authentication module 742 causes the processor 700 to retrieve a Global Release Identifier from the file cache 750, e.g. from a field called “Global Release Identifier” 805, and compare it with a Global Release Identifier received from the neighbor node by way of the wireless interface (i.e. by means of the wireless connection 711 established by the processor 700 as it continues to execute the peer-to-peer module 735).

According to another alternative example embodiment, the file determination module 740 also includes an authentication module 742. According to this alternative embodiment, the file determination module 740 causes the processor to receive an authentication token in the form of an identity code. The authentication module 742 of this alternative embodiment, when executed by the processor 700, causes the processor 700 to authenticate the selected file by minimally causing the processor 700 to compare a received identity code with an identity code for the selected file. Accordingly, this alternative embodiment of the authentication module 742 causes the processor to retrieve an identity code from the file cache 750, e.g. from the a field called “identity code” 810, and compare it with an identity code received from the neighbor node by way of the wireless interface (i.e. by means of the wireless connections 711 established by the processor 700 as it continues to execute the peer-to-peer module 735).

According to yet another alternative example embodiment, the file determination module 740 also includes an authentication module 742. According to this alternative embodiment, the file determination module 740 causes the processor to receive an authentication token in the form of calculated value. The authentication module 742, when executed by the processor 700, causes the processor 700 to authenticate the selected file by minimally causing the processor 700 to compare a received calculated value with a calculated value for the selected file. Accordingly, this alternative embodiment of the authentication module 742 causes the processor to retrieve a calculated value from the file cache 750 from a calculated value field. According to yet another alternative embodiment, the authentication module 742 causes the processor 700 to retrieve a hash code from a field called a hash code 815. As such, the calculated value received by the processor of this alternative embodiment comprises a hash code for the selected file. In yet another alternative embodiment, the authentication module 742 minimally causes the processor 700 to calculate a hash code for the selected file according to the content stored in the content field 825 included in the file cache 750. Then, the processor 700 is further caused to compare the received hash code with either a retrieved hash code or a calculated hash code.

According to yet another alternative embodiment, the authentication module 742 causes the processor 700 to retrieve a CRC code from a field called CRC 815. As such, the calculated value received by the processor of this alternative embodiment comprises a CRC code for the selected file. In yet another alternative embodiment, the authentication module 742 minimally causes the processor 700 to calculate a CRC code for the selected file according to the content stored in the content field 825 included in the file cache 750. Then, the processor 700 is further caused to compare the received hash code with either a retrieved CRC code or a calculated CRC code.

According to one alternative embodiment, the wireless file provider device 705 includes a conveyance module 755 that, when executed by the processor, minimally causes the processor to provide a file from the file cache 750 according to a segment identifier. Accordingly, a segment identifier is received 877 from a neighbor node by means of a wireless connection 711 established by the processor as it executes the peer-to-peer module 735. Generally, the conveyance module 755 causes the processor to respond to a segment identifier by retrieving a portion of a file content stored in the file cache, wherein the file content field 825 is segregated into a plurality of segments (825A, 825B, 825C, etc) and wherein retrieval is accomplished from a segment of the file content field 825 according to the received segment identifier.

In yet another alternative embodiment, the conveyance module 755 causes the processor 700 to convey a determined file to a first recognized neighbor node by minimally causing the processor 700 to execute the peer-to-peer module 735. By executing the peer-to-peer module 735, the processor 700 is caused to recognize a second neighbor node. The peer-to-peer module 735 further minimally causes the processor to establish a second application-level connection with the second recognized neighbor node. Using the second application-level connection, the conveyance module 755 further minimally causes the processor 700 to receive a portion of a determined file by way of the second establish connection. As such, a portion of the determined file is received from the second recognized neighbor node. Once received from the second recognized neighbor node, the conveyance module 735 further minimally causes the processor 700 to direct the received portion of the determined file to the first recognized neighbor node. According to this alternative embodiment, this is accomplished as the processor continues to execute the conveyance module 755, wherein the conveyance module 755 further minimally causes the processor 700 to direct the received portion of the determined file to the first established application-level connection.

One alternative example embodiment of a file provider device 705 further includes an incentive module 760. The incentive module 760, when executed by the processor 700, minimally causes the processor 700 to establish an incentive when a file is conveyed from the file cache 750 to a neighbor node using the application level connection 711. In yet another alternative embodiment, the incentive module 760 causes the processor 700 to establish an incentive by minimally causing the processor 700 to communicate to a neighbor node by means of the wireless connection 711 a sales price for a file stored in the file cache 750. Typically, this is accomplished by the processor 700 by retrieving 885 from the file cache a sales price from a sales price field 830 included in a record for particular file stored in the file cache 750. The incentive module 760 then minimally causes the processor 700 to direct 890 the sales price to the peer-to-peer module 735. The processor, as it continues to execute the peer-to-peer module 735, is then minimally caused to convey the sales price to the neighbor node by means of the wireless connection 711. The neighbor node can either accept or reject the sales price. In the event that the neighbor node accepts the sales price, the incentive module further minimally causes the processor 700 to receive from the neighbor node by means of the application level connection 711 an acceptance 893 of the price. Along with the acceptance, the incentive module 760 further minimally causes the processor to receive from the neighbor node a user identifier 893. As the processor continues to execute the incentive module 760, it is further minimally caused to store in the memory 730 an acceptance record 897. Typically, the acceptance record 897 includes the user identifier that was received from the neighbor node. In an alternative embodiment, the acceptance record 897 further includes a sales price. In yet another alternative embodiment, the acceptance record 897 further includes a file identifier, which comprises at least one of a global release identifier, an identity code and a file name.

According to one alternative embodiment, the incentive module 760 causes the processor to establish an incentive by minimally causing the processor 700 to communicate to a neighbor node by means of the application level connection 711 a sales price for a file stored in the file cache 750. In this alternative embodiment, the incentive module 760 further minimally causes the processor to receive a counter-price from the neighbor node. The incentive module 760 of this alternative embodiment further minimally causes the processor to retrieve from the file cache a minimum price value from a minimum price field 835 included in the file cache 750. An acceptance 897 is then stored in the memory by the processor 700 when the counter-price received by the processor from the neighbor node is equal to or greater than the minimum sales price retrieved by the processor 700 as it continues to execute the incentive module 760.

In yet another alternative embodiment, the incentive module 760, when executed by the processor 700, further minimally causes the processor to convey to a purchase manager by way of the wireless interface 710 the contents of the acceptance record 897. According to one alternative embodiment, the incentive module 760 also causes the processor 700 to direct to the purchase manager by way of the wireless interface 710 at least one of a global release identifier, a file name and an identity code. According to various alternative embodiments, this includes at least one of the user identifier received from the neighbor node and the sales price. According to this alternative embodiment, the incentive module 760 also minimally causes the processor 700 to convey to the purchase manager by way of the wireless interface 710 a provider identifier. Typically, the provider identifier 880 is received from the memory 730 by the processor 700 as it executes the incentive module 760.

According to one alternative embodiment, the incentive module 760 causes the processor 700 to establish connection with a purchase manager using a short-range wireless interface (e.g. BlueTooth or 802.11). According to yet another alternative embodiment, the incentive module 760 causes the processor 700 to establish connection with a purchase manager using a wireless cellular data interface (e.g. the G3 network). This list of examples is not meant to limit the scope of the claims appended hereto.

While the present method and apparatus has been described in terms of several alternative and exemplary embodiments, it is contemplated that alternatives, modifications, permutations, and equivalents thereof will become apparent to those skilled in the art upon a reading of the specification and study of the drawings. It is therefore intended that the true spirit and scope of the claims appended hereto include all such alternatives, modifications, permutations, and equivalents. 

1. A method for wirelessly sharing a file comprising: recognizing a neighbor node; establishing a first application-level connection with the recognized neighbor node; determining a file to be shared with the neighbor node; and conveying to the neighbor node a portion of the determined file while the first application-level connection is viable.
 2. The method of claim 1 wherein determining a file to be shared comprises: receiving a user identifier from the neighbor nodes determining if the user identifier is affiliated with a particular group; and determining a file associated with a the particular group when the user identifier is affiliated with said particular group.
 3. The method of claim 1 wherein determining a file to be shared comprises: recognizing a second neighbor node; establishing an application-level connection with the second recognized neighbor node; receiving a list of files available from the second neighbor node; conveying the list of available files to the recognized neighbor node; and receiving a file selection from the recognized neighbor node.
 4. The method of claim 1 wherein determining a file to be shared comprises: receiving a file request; selecting a file according to the file request; receiving an authentication token; authenticating the selected file according to the authentication token; and declaring the selected file to be a determined file when the file is authenticated.
 5. The method of claim 4 wherein receiving an authentication token comprises receiving a Global Release Identifier and wherein authenticating the selected file comprises comparing the received Global Release Identifier with a Global Release Identifier for the selected file.
 6. The method of claim 4 wherein receiving an authentication token comprises receiving an identity code and wherein authenticating the selected file comprises determining an identity code for the selected file and comparing the received identity code with a determined identity code for the selected file.
 7. The method of claim 4 wherein receiving an authentication token comprises receiving a calculated value and wherein authenticating the selected file comprises determining a hash code for the selected file and comparing the received hash code with a determined hash code for the selected file.
 8. The method of claim 1 wherein conveying to the neighbor node a portion of the determined file comprises: receiving from the neighbor node a segment identifier; extracting a segment from the determined file according to the segment identifier; and directing the extracted segment to the established application-level connection.
 9. The method of claim 1 wherein conveying to the neighbor node a portion of the determined file comprises: recognizing a second neighbor node; establishing a second application-level connection with the second recognized neighbor node; receiving a portion of the determined file by way of the second established connection; and conveying the received portion of the determined file to the established connection.
 10. The method of claim 1 further comprising establishing an incentive for sharing the determined file.
 11. The method of claim 10 wherein establishing an incentive comprises: communicating a sales price to the neighbor node; receiving an acceptance from the neighbor node; receiving a user identifier from the neighbor node; and noting a sale when an acceptance is received.
 12. The method of claim 11 wherein noting a sale comprises communicating the sales price, a provider identifier and the user identifier received from the neighbor node to a purchase manager.
 13. The method of claim 11 wherein noting a sale comprises communicating the user identifier received from the neighbor node and an identifier for the determined file to a purchase manager.
 14. The method of claim 10 wherein establishing an incentive comprises: communicating a sales price to the neighbor node; receiving at least one of an acceptance and a counter-price from the neighbor node; noting a sale when an acceptance is received; and noting a sale when a counter-price is received and the counter-price is greater than a minimum sale price for the determined file.
 15. A wireless file provider device comprising: processor capable of executing an instruction sequence; wireless interface capable of interacting with a wireless network; and memory capable of storing a file cache and one or more instruction sequences including: peer-to-peer module that, when executed by the processor, minimally causes the processor to: recognize a first neighbor node; and establish a first application-level connection with the recognized neighbor node using the wireless interface; file determination module that, when executed by the processor, minimally causes the processor to determine a file to be shared with the recognized neighbor node; and conveyance module that, when executed by the processor, minimally causes the processor to convey from the file cache to the first connection established with the first recognized neighbor node a portion of a determined file while the established connection remains viable.
 16. The wireless file provider device of claim 15 wherein the file determination module causes the processor to determine a file to be shared by minimally causing the processor to: receive a user identifier by means of the first established application level connection; and select a file from the file cache according to the user identifier.
 17. The wireless file provider device of claim 15 wherein the file determination module causes the processor to determine a file to be shared by minimally causing the processor to: execute the peer-to-peer module in order to: recognize a second neighbor node; establish a second application level connection with the second neighbor node using the wireless interface; receive a list of one or more available files from the second neighbor node by means of the second established connection; convey the list of one or more available files to the first established connection; and receive a file selection by means of the first established connection.
 18. The wireless file provider device of claim 15 wherein the file determination module causes the processor to determine a file to be shared by minimally causing the processor to: receive a file request from the neighbor node by means of the first application level connection; select a file stored in the file cache according to the file request; receive an authentication token from the neighbor node by means of the application level connection; and authenticate the selected file according to the authentication token; and execute the conveyance module when the file is determined to be authentic.
 19. The wireless file provider device of claim 18 wherein the file determination module causes the processor to receive an authentication token in the form of a Global Release Identifier and includes an authentication module that, when executed by the processor, causes the processor to authenticate the selected file by minimally causing the processor to: compare a received Global Release Identifier with a Global Release Identifier for the selected file.
 20. The wireless file provider device of claim 18 wherein the file determination module causes the processor to receive an authentication token in the form of an identity code and includes an authentication module that, when executed by the processor, causes the processor to authenticate the selected file by minimally causing the processor to: compare a received identity code with an identity code for the selected file.
 21. The wireless file provider device of claim 18 wherein the file determination module causes the processor to receive an authentication token in the form of a calculated value and includes an authentication module that, when executed by the processor, causes the processor to authenticate the selected file by minimally causing the processor to: determine a calculated value according to a selected file; and compare a received calculated value with a calculated value determined according to the selected file.
 22. The wireless file provider device of claim 15 wherein the conveyance module causes the processor to convey a determined file by minimally causing the processor to: receive by means of the first application level connection a segment identifier from a neighbor node; extract a portion of a file from the file cache according to the segment identifier; and direct the extracted portion of the file to the neighbor node by means of the first application level connection.
 23. The wireless file provider device of claim 15 wherein the conveyance module causes the processor to determine a file to be shared by minimally causing the processor to: execute the peer-to-peer module in order to: recognize a second neighbor node; establish a second application level connection with the second neighbor node using the wireless interface; receive a portion of the determined file by way of the second established connection; and convey the received portion of the determined file to the first established connection
 24. The wireless file provider device of claim 15 further comprising an incentive module that, when executed by the processor, minimally causes the processor to establish an incentive when a file is conveyed from the file cache to a neighbor node using the first application level connection.
 25. The wireless file provider device of claim 24 wherein the incentive module causes the processor to establish an incentive by minimally causing the processor to: communicate to a neighbor node by means of the first application level connection a sales price for a file stored in the file cache; receive from the neighbor node by means of the first application level connection an acceptance; receive from the neighbor node by means of the first application level connection a user identifier; and store in the memory an acceptance record that includes the user identifier when an acceptance is received.
 26. The file provider device of claim 25 wherein the incentive module further minimally causes the processor to convey to a purchase manager by way of the wireless interface the user identifier, the sales price and a provider identifier, wherein the provider identifier is stored in the memory.
 27. The file provider device of claim 25 wherein the incentive module further minimally causes the processor to convey to a purchase manager by way of the wireless interface the user identifier and at least one of a Global Release Identifier, a filename and an identity code.
 28. The wireless file provider device of claim 24 wherein the incentive module causes the processor to establish an incentive by minimally causing the processor to: communicate to a neighbor node by means of the first application level connection a sales price for a file stored in the file cache; receive from the neighbor node by means of the first application level connection at least one of an acceptance and a counter-price; store in the memory an acceptance record when an acceptance is received; and store in the memory an acceptance when a counter-price is received and when the counter-price is greater or equal to a minimum sales price for a file stored in the file cache. 